package pl;

import java.util.Map;
import java.util.Iterator;
/*
 * Una clase está formasa por una lista de variables y una lista de módulos.
 * La cabeza será una cadena como "class nombreClase {\n"
 * fi sera una cadena como "blancos }"
 */
public class clase {
    String cabeza;
    String fi;
    listaVariables variables;
    listaModulos modulos;

    clase(){
        cabeza = new String();
        variables= new listaVariables();
        modulos= new listaModulos();
    }

    clase(String cap, listaVariables livar,listaModulos limods){
        cabeza = cap;
        variables = livar;
        modulos = limods;
    }

    public String obtenCabeza(){
        return cabeza;
    }

    public void setCabeza(String cap){
        cabeza= cap;
    }

    public boolean marca(String cadena){
        boolean done = false;
        if(variables.usa(cadena)){
            done = true;
        } else if (modulos.usa(cadena)){
            done = true;
        }
        return(done);
    }

    public void usa(TablaSimbolos tauleta) {
        Iterator i = tauleta.simbolos.entrySet().iterator();
        while (i.hasNext()) {
            Map.Entry me = (Map.Entry) i.next();
            String si = me.getKey().toString();
            String nom = ((Simbolo) me.getValue()).nombre;

            if (((Simbolo) me.getValue()).esEmprat())
            {
                marca(nom);
            }
        }
    }
    public void incorporaVariable(String cadena, String nomVar, int nivel){
        variables.mete(nomVar, cadena, nivel);
    }
    public void incorporaModulo(String cabecera, int nivel, String nomModulo){
        modulos.mete(nivel, nomModulo, cabecera);
    }

    public void incorporaVariable(String nomVar,String cadena, int nivel, boolean usa){
        variables.mete(nomVar, cadena,nivel,usa);
    }
    public void setFi(String fi)
    {
        this.fi = fi;
    }

    @Override
    public String toString(){
        String aux= cabeza;
        aux+= variables.toString();
        aux+= modulos.toString();
        aux+=fi;
        return(aux);
    }

}
